package xdb;

/**
 * TTable jmx 管理接口
 *
 * @author lichenghua
 */
public interface TTableMBean {
    String getTableName();

    String getLockName();

    String getPersistenceName();

    // cache info
    int getCacheCapacity();

    void setCacheCapacity(int capacity); // only for debug.

    int getCacheSize();

    String getCacheClassName();

    // table access counter
    long getCountAdd();               // add 次数

    long getCountAddMiss();           // add 不命中 cache 次数

    long getCountAddStorageMiss();    // add 数据库中已经存在 key 次数

    long getCountGet();               // get 次数

    long getCountGetMiss();           // get 不命中 cache 次数

    long getCountGetStorageMiss();    // get 数据库中不存在 key 次数

    long getCountRemove();            // remove 次数

    long getCountRemoveMiss();        // remove 不命中 cache 次数

    long getCountRemoveStorageMiss(); // remove 数据库中不存在 key 次数

    // 计算值，方便察看
    String getPercentAddHit();        // AddHit = Add - AddMiss, AddHit / Add

    String getPercentGetHit();        // GetHit = Get - GetMiss, GetHit / Get

    String getPercentRemoveHit();     // RemoveHit = Remove - RemoveMiss, RemoveHit / Remove

    String getPercentCacheHit();      // (AddHit + RemoveHit + GetHit) / (Add + Remove + Get)

    // Storage
    long getStorageCountMarshal0();

    long getStorageCountMarshalN();

    long getStorageCountMarshalNTryFail();

    long getStorageCountFlush();

    long getStorageCountSnapshot();

    long getStorageFlushKeySize();

    long getStorageFlushValueSize();
}
